/**
 * @filename:UserAccountController 2023-4-21
 * @project Wonder Java前后台分离框架  1.1.0
 * Copyright(c) 2020 Wonder Co. Ltd. 
 * All right reserved. 
 */
package com.wonder.app.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Date;
import java.util.Map;

import com.wonder.app.domain.UserAccount;
import com.wonder.app.vo.UserAccountVo;
import com.wonder.app.service.UserAccountService;
import com.wonder.app.request.UserAccountRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.wonder.common.common.AjaxMap;
import com.wonder.common.common.AjaxResult;
import com.wonder.common.common.CommonPage;
import com.wonder.common.utils.MessageUtils;
import com.wonder.common.utils.StringUtils;
import com.wonder.utils.DBUtils;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParam;
/**   
 * 
 * <p>说明： 用户资金账户API接口层</P>
 * @version: 1.1.0
 * @author: Wonder
 * @time    2023-4-21
 *
 */
@Api(tags = "用户资金账户")
@RestController
@RequestMapping("/app/UserAccount")
public class UserAccountController {
	
	@Autowired
	private UserAccountService userAccountService;
	
	@Autowired
	private DBUtils dbUtils;
	
	@ApiOperation(value = "用户资金账户列表")
	@RequestMapping(value = "/index", method = RequestMethod.POST)
	public Map<String,Object> index(@RequestBody UserAccountRequest userAccountRequest) {
	    Page<UserAccountVo> page = new Page<UserAccountVo>(userAccountRequest.getPage(), userAccountRequest.getLimit());
	    IPage<UserAccountVo> list = userAccountService.selectUserAccountVoList(userAccountRequest, page);
		
		Map<String,Object> retMap=new HashMap<>();
		retMap.put("data",CommonPage.restPage(list));
		
        Map<String,Object> smallTable=new HashMap<>();
        smallTable.put("user_callers",dbUtils.getDropDownList("select user_id,name from sys_admin where is_caller=1"));
        retMap.put("sql_field_data",smallTable);
  
		return AjaxMap.success(retMap);
	}
	
	/**
	 * @explain 获取sql语句定义的字段信息
	 * @return  Boolean
	 * @author  Wonder
	 */
	@PostMapping("/getFieldList")
	@ApiOperation(value = "获取sql语句定义的字段信息", notes = "作者：Wonder")
	public AjaxResult<Map<String,Object>> getFieldList(){
	    Map<String,Object> smallTable=new HashMap<>();
        smallTable.put("user_callers",dbUtils.getDropDownList("select user_id,name from sys_admin where is_caller=1"));
        return AjaxResult.success(smallTable);
	}
	
	/**
	 * @explain 修改排序开关
	 * @param   entity
	 * @return  Boolean
	 * @author  Wonder
	 */
	@PostMapping("/updateExt")
	@ApiOperation(value = "修改排序开关", notes = "作者：Wonder")
	public AjaxResult<UserAccount> updateExt(@RequestBody UserAccount entity){
		if (null!=entity) {
			boolean rsg = userAccountService.updateById(entity);
			if (rsg) {
				  return AjaxResult.success("system.updateSuccess");
			  }else {
				  return AjaxResult.failed("system.updateFailed");
			  }
		}else {
			return AjaxResult.failed("system.parameterError");
		}
	}
	
	/**
	 * @explain 查看对象明细  
	 * @param   map 对象参数：id
	 * @return  JsonResult
	 * @author  Wonder
	 */
	@PostMapping("/detail")
	@ApiOperation(value = "获取用户资金账户对象明细", notes = "作者：Wonder")
	public AjaxResult<UserAccountVo> detail(@RequestBody Map<String,Object> map){
	    if(map==null) return AjaxResult.failed("system.parameterError");
		Long uid=Long.parseLong(map.get("uid").toString());		
	    UserAccountVo userAccount=userAccountService.getVoById(uid);
		if (null!=userAccount ) {	
			 return AjaxResult.success(userAccount);
		}else {
			 return AjaxResult.failed("system.parameterError");
		}
		
	}
	
	
}